home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / machserver / 1.098 / raid / bitvec.h < prev    next >
C/C++ Source or Header  |  1990-10-12  |  751b  |  29 lines

  1. /*
  2.  *
  3.  */
  4.  
  5. #ifndef _BITVEC
  6. #define _BITVEC
  7.  
  8. #define BIT_VEC_SIZE 4
  9.  
  10. typedef int *BitVec;
  11.  
  12. #define VecIndex(w, b)    (((w) << 5) | b)
  13. #define WordIndex(i)    ((i) >> 5)
  14. #define BitIndex(i)    ((i) & 0x1F)
  15. #define VecSize(n)    (((n)/32 + 1) * sizeof(int))
  16.  
  17. #define SetBit(bitVec, i) ( (bitVec)[WordIndex(i)] |= 1 << BitIndex(i) )
  18. #define ClrBit(bitVec, i) ( (bitVec)[WordIndex(i)] &= ~(1 << BitIndex(i)) )
  19. #define IsSet(bitVec, i) ( (bitVec)[WordIndex(i)] >> BitIndex(i) & 1 )
  20.  
  21. #define FOR_ALL_VEC(bitVec, i, n)    \
  22.     for ((i) = -1; ((i) = GetBitIndex((bitVec), (i), (n))) != -1;)
  23.  
  24. extern BitVec MakeBitVec _ARGS_((int n));
  25. extern void ClearBitVec _ARGS_((BitVec bitVec, int n));
  26. extern int GetBitIndex _ARGS_((BitVec bitVec, int i, int n));
  27.  
  28. #endif /* _BITVEC */
  29.